Version cont8

Modifizieren Sie das in der Version cont7 beschriebene Programm in der Weise, dass Sie anstatt der Klasse TCont eine Template-Klasse

   template <class T> class Cont
   {
      ...
   }

vereinbaren, die mit einem beliebigen Datentyp T arbeitet. Beachten Sie, dass die Implementierung einer Template-Klasse für den Compiler sichtbar sein muss, wenn ein Objekt der Klasse erzeugt wird (wie im Testprogramm). Deshalb müssen nicht nur die Deklarationen, sondern auch die Definitionen sämtlicher Element-Funktionen in der Header-Datei contarr.hpp untergebracht werden. Speichern Sie das (minimal veränderte) Testprogramm unter dem Namen contt.cpp.

Achtung: Sowohl bei BC 3.1 als auch bei Visual C++ 6.0 / 7.0 (.NET) müssen  die Elementfunktionen der verschachtelten Klasse iterator innerhalb der Klassendeklaration definiert werden und werden damit automatisch zu inline-Funktionen. Wird dagegen verstoßen, kommt es zu Compiler- bzw. Linker-Fehlern. Auch die nachträgliche Definition der Elementfunktionen (außerhalb der Klassendeklaration) unter Verwendung des Schlüsselworts inline führt nicht zum Ziel! Diese Compiler entsprechen in diesem Punkt nicht dem C++ ANSI-Standard. Die Entwicklungsumgebung "Visual Studio .NET 2003" verhält sich hier endlich korrekt!

Das Programm entsteht also aus den folgenden Dateien:

t.h deklariert T und die I/O-Funktionen für T
intio.c definiert die I/O-Funktionen für T == int
conarr.hpp deklariert und implementiert die Template-Klasse Cont
cont.cpp Testprogramm

Um zu zeigen, wie universell die Template-Klasse Cont einsetzbar ist, ändern Sie das Programm anschließend so ab, dass statt eines int-Containers ein BOOK-Container angelegt wird.